import hashlib

# hash算法的校验

def main():
    digester = hashlib.md5()
    # 读安装包
    # MD5、SHA1、sha256
    # md5已经不安全了，现在都使用后面的两种方式
    with open('/Users/didi1/PycharmProjects/djangoProject/hash_test_gql/Python-3.9.10.tar.xz ','ba+') as file_hash:
        # 代码有很多坏味道，重复是最坏的一种，引入迭代器iter
        # 迭代器iter，lambda后接要迭代的对象，','分隔，看到后面的内容则停止迭代，b''指遇到空字节则
        file_iter = iter(lambda:file_hash.read(1024),b'')
        for data in file_iter:
            digester.update(data)
    # 16进制的秘钥
    print(digester.hexdigest())
if __name__=="__main__":
    main()

# 作用，如用户注册登录。后台数据库中是不可以记录这个类似于明文密码的，必须使用类似的加密算法进行加密
# md5等是单向hash，是不可逆的hash，只有密码正确才可以对应上进行登录。但是弱口令比较容易进行破解----是摘要形式